package com.boyunv.异或运算;

/**
 * 题目5:  认识异或运算
 * 一个数组只有一种数出现K次,其他数都出现了M次,M>1,K<M
 * 要求:找到出现K次的数,  空O(1)  时O(n)
 *
 */
public class five {

    //arr中只有一种数出现K次,其他数出现M次
    public  static  int onlyKTimes(int[] arr,int k,int m){
        int[] t = new int[32];
        //t[0]  0位置的1 出现了几个
        // t[i]  i位置代表1出现了 几个
        for(int num:arr){
            for (int i = 0; i < arr.length; i++) {
                t[i]=(num>>i)&1;
            }
            int ans=0;
            for(int i=0;i<32;i++){
                if(t[i]%m!=0){
                    ans|=(1<<i);
                }
            }
            return ans;
        }

    }

}
